<!DOCTYPE html>
            
<HTML>
<HEAD>
<meta name="booktitle" content="Developing Applications With Objective Caml" >
 <meta charset="ISO-8859-1"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<META name="GENERATOR" content="hevea 1.05-7 of 2000-02-24">
<META NAME="Author" CONTENT="Christian.Queinnec@lip6.fr">
<LINK rel=stylesheet type="text/css" href="videoc-ocda.css">
<script language="JavaScript" src="videoc.js"><!--
//--></script>
<TITLE>
 Outline of the book
</TITLE>
</HEAD>
<BODY class="regularBody">
<A HREF="book-ora003.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora006.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H2>Outline of the book</H2>
The present work consists of four main parts, bracketed by two chapters
and enhanced by two appendices, a bibliography, an index of language
elements and an index of programming concepts.<BR>
<BR>
<DL COMPACT=compact>
<DT>
Chapter <A HREF="index.html#chap-getocaml">1</A>&nbsp;:<DD> This chapter
describes how to install version <TT>2.04</TT> of the Objective CAML language on the
most current systems (Windows, Unix and MacOS). <BR>
<BR>

<DT>Part I: Core of the language<DD>
The first part is a complete presentation of the basic elements of the
Objective CAML language. Chapter <A HREF="index.html#chap-PF">2</A> is a dive into the functional
core of the language. Chapter <A HREF="index.html#chap-PI">3</A> is a continuation of the
previous one and describes the imperative part of the language. Chapter
<A HREF="index.html#chap-C-Styles">4</A> compares the ``pure'' functional and imperative styles,
then presents their joint use. Chapter <A HREF="index.html#chap-PG">5</A> presents the graphics
library. Chapter <A HREF="index.html#chap-PART1-Applications">6</A> exhibits three
applications: management of a simple database, a mini-Basic interpreter and
a well-known single-player game, minesweeper.

<DT>Part II: Development tools<DD>
The second part of the book describes the various tools for application
development. Chapter <A HREF="index.html#chap-Compilation">7</A> compares the various
compilation modes, which are the interactive toplevel and command-line
bytecode and native code compilers. Chapter <A HREF="index.html#chap-Bibliotheques">8</A>
presents the principal libraries provided with the language distribution.
Chapter <A HREF="index.html#chap-GC">9</A> explains garbage collection mechanisms and details
the one used by Objective CAML. Chapter <A HREF="index.html#chap-Aprog">10</A> explains the use of
tools for debugging and profiling programs. Chapter <A HREF="index.html#chap-AlexS">11</A>
addresses lexical and syntactic tools. Chapter <A HREF="index.html#chap-interop">12</A> shows
how to interface Objective CAML programs with C. Chapter
<A HREF="index.html#chap-PART2-Applications">13</A> constructs a library and an application.
This library offers tools for the construction of GUIs. The application is
a search for least-cost paths within a graph, whose GUI uses the preceding
library.

<DT>Part III: Organization of applications<DD>
The third part describes the two ways of organizing a program: with
modules, and with objects. Chapter <A HREF="index.html#chap-modules">14</A> is a presentation of
simple and parameterized language modules. Chapter <A HREF="index.html#chap-POO">15</A>
introduces Objective CAML object-oriented extension. Chapter
<A HREF="index.html#chap-C-Organisation">16</A> compares these two types of organization and
indicates the usefulness of mixing them to increase the extensibility of
programs. Chapter <A HREF="index.html#chap-PART3-Applications">17</A> describes two substantial
applications: two-player games which put to work several parameterized
modules used for two different games, and a simulation of a robot world
demonstrating interobject communication.

<DT>Part IV: Concurrence and distribution<DD>
The fourth part introduces concurrent and distributed programs while
detailing communication between processes, lightweight or not, and on the
Internet. Chapter <A HREF="index.html#chap-PS">18</A> demonstrates the direct link between the
language and the system libraries, in particular the notions of process and
communication. Chapter <A HREF="index.html#chap-PC">19</A> leads to the lack of determinism of
concurrent programming while presenting Objective CAML's threads. Chapter
<A HREF="index.html#chap-PD">20</A> discusses
interprocess communication via sockets in the distributed memory model.
Chapter <A HREF="index.html#chap-PART4-Applications">21</A> presents first
of all a toolbox for client-server applications. It is subsequently used
to extend the robots of the previous part to the client-server model.
Finally, we adapt some of the programs already encountered in the form of
an HTTP server.

<DT>Chapter <A HREF="index.html#chap-Devel">22</A><DD> This last chapter
takes stock of application development in Objective CAML and presents the
best-known applications of the ML language family.

<DT>Appendices<DD> The first appendix explains the notion of cyclic
types used in the typing of objects. The second appendix describes the
language changes present in the new version <TT>3.00</TT>. 
These have been integrated in
all following versions of Objective CAML (<TT>3.xx</TT>).
</DL>Each chapter consists of a general presentation of the subject being
introduced, a chapter outline, the various sections thereof, statements of
exercises to carry out, a summary, and a final section entitled
``To learn more'' which indicates bibliographic
references for the subject which has been introduced.



<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<HR>
<A HREF="book-ora003.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora006.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
